In H.264/Advanced Video Coding (AVC) compatible Three-Dimensional Video (3DV) coding standard 3D-AVC (AVC compatible video with depth information) which is an active standardization project at present, Depth-Range-based Weighted Prediction (DRWP) and View Synthesis Prediction (VSP) encoding and decoding processes require the use of Depth Parameters (DPs), including maximum depth (marked as “ZFar”), minimum depth (marked as “ZNear”), camera parameters (such as a focal distance) and the like, which are used in a depth map generation process. At present, 3D-AVC encodes and transmits DPs in a subset Sequence Parameter Set (subset SPS or sub-SPS, which is a type of parameter set) and a Depth Parameter Set (DPS) respectively.
3D-AVC determines whether the DPs in the sub-SPS or the DPS are to be used by judging whether the value of syntax element dps_id in Slice Header (SH) is equal to “0” or not. The decoding process is described as follows.
In the decoding process, a decoder parses control parameters in the SH. If the DRWP and/or VSP is used by the decoding process, the decoder further parses a field corresponding to the syntax element dps_id in the SH. If the value of the dps_id is equal to 0, the decoder uses the DPs in the sub-SPS; while if the value of the dps_id is more than 0, the decoder activates the DPS with its identification number (ID) value equal to dps_id following parameter set activation process, and the DPs in this activated DPS are used in the decoding process.
Corresponding to the decoding process, the encoding process is as follows.
In the encoding process, when DPs are used, an encoder writes an ID of the DPS into the field corresponding to the dps_id in the SH. If the DPs in the sub-SPS are used, value “0” is written into the field corresponding to the syntax element dps_id of the SH; while if the DPs in a certain DPS are used, an ID value of this DPS is written into the field corresponding to the syntax element dps_id of the SH, and this ID value is equal to the value of the syntax element depth parameter set id in this DPS.
In order to improve the encoding efficiency, predictive encoding may further be used for the DPs in the DPS, and a prediction mode and prediction reference information may be encoded in the DPS. The prediction reference may be the DPs in another DPS, and may also be the DPs in a sub-SPS. Therefore, 3D-AVC stores the DPs decoded from DPS in an array and employs dps_id as the index parameter for accessing the array, and permanently employs an array element corresponding to an index parameter “0” as a storage location for the DPs in the sub-SPS. In this way, 3D-AVC identifies the prediction reference of the DPs in the DPS directly by the index parameter of the DPs in the array.
Another possible implementation mode different from the SH of 3D-AVC is as follows: an independent flag is added to identify whether the DPs used for a slice decoding process are from the sub-SPS or not, instead of judging whether the DPs in the sub-SPS or the DPS are to be used by judging whether the dps_id is 0 or not. When the DPs in the sub-SPS are not used, the DPS with its ID value equal to dps_id is activated, and current slice is decoded using the DPs in the activated DPS. The method is not included in 3D-AVC because an additional flag and its corresponding decoding operations are required to be added.
Main defects of the conventional method used by 3D-AVC are inconsistency with general operations of a parameter set, which introduces additional judgment and special condition processing flows in an implementation flow. Main limitations of the conventional method are as follows.
First, the operations related to SPS/sub-SPS in the decoding process are inconsistent with general processing flows of the parameter set. “Setting data included in the parameter set to be data actually used in the decoding process immediately after the parameter set is activated” is one of general flows of the parameter set. In slice decoding process, the decoder activates the sub-SPS at first. For a slice using the DPs, the decoder can determine to update information in a storage element corresponding to the index parameter “0” in the array storing DP data, but cannot determine whether to use DP information of the activated sub-SPS or not in a subsequent decoding process of the slice after activating the sub-SPS, since it has to wait for DRWP and/or VSP flags and dps_id information.
Second, as mentioned above, the decoder cannot determine the validity range of the DPs included in the sub-SPS in the decoding process, namely whether the DPs included in the sub-SPS are applicable to the entire decoding process or only used for updating the array storing the DP data, immediately after the sub-SPS is activated.
Third, the DPS operations in the decoding process are inconsistent with the general processing flows of the parameter set. “That the decoder activates the parameter set with its ID equal to the value of the corresponding syntax element in the SH and simultaneously sets a previously activated parameter set with a different ID value into an inactive state” is also one of the general flows of the parameter set. In the slice decoding process, the condition that the value of dps_id is “0” is required to be specially processed, that is, the information in the storage element corresponding to the index parameter “0” in the array storing the DP data is assigned to a variable corresponding to the DP in a current slice decoding process, and a special condition processing flow of the decoder is added.
For the problem of relatively complex flows of methods for encoding/decoding using parameter sets in a related art, there is yet no effective solution.